An image-forming system transfers images from original documents onto paper or other medium to create a finished product such as a booklet, a folded brochure, or a tabbed notebook. The original documents may be in hard copy (paper or other medium) or in electronic form (floppy disk, compact disc, and the like) or may be transmitted over a network such as the Internet. A “print job” is the combination of original documents with instructions for producing the finished product.
Many image-forming systems have a graphic user interface (GUI) for visually representing and controlling the transfer of images for a print job. The GUI permits the creation and manipulation of relationships and associations among various components of the image-forming machine and the print job. These relationships and associations may be displayed using a hierarchical approach like a tree structure or file folder structure or using some alternate form of visual indication.
The GUI typically uses multiple software applications for implementing the various functionalities in the image-forming machine. These software applications communicate and otherwise interact with each other to provide the relationships and associations among various components of the image-forming machine and the print job. The more a software product is used, the more potential new features are exposed. Traditional software packages generally are difficult to extend. Usually, only the software company that developed the product may make changes to the software application. A new functionality desired by a customer may not fit in with the software company's goals and strategies and thus may never be implemented by the software company.
Several software products offer “plug-in” interfaces to permit the addition of new functionality, which may be added by a party other than the creator of the software product. A plug-in interface permits new functionality to be implemented in a separate plug-in package. The “plug-in” package includes additional software that interacts with the original software application through the plug-in interface. A software product supporting a plug-in interface may have multiple plug-in software packages depending upon the number of available functionalities.
Many image-forming systems have one software application that provides an image-forming management functionality and another software application that provides a document or imaging viewing functionality. Ideally, these two applications will be interconnected in some way. One methodology commonly used for such inter-process communication is the Common Object Request Broker Architecture (CORBA). The use of an external inter-process communication package or interface (such as CORBA) increases the cost, the complexity of installation, and the maintenance of an image-forming system. When inter-connected software applications operate in separate process spaces, synchronization issues may arise (similar to those found in multi-threaded applications). Additional measures typically are implemented to avoid competitive conditions and event collisions between the software applications. These additional measures usually complicate the image-forming system.
Both of these software applications could however, include plug-in interfaces for addition of new functionality. The image-forming system could then be composed such that it would eliminate the aforementioned problems associated with extensibility, communications and synchronization.